package com.szrt.socket.ch04.url.demo01;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

import org.junit.Test;

/**
 * URL 统一资源定位符 一个URL的对象对应互联网上的一个资源
 * 可以通过URL的一个对象 调用其相应的方法将此资源读取/下载下来。
 * startup.bat
 * D:\JavaTool\apache-tomcat-7.0.73\webapps\examples\HelloWorld.txt
 * http://localhost:8080/examples/HelloWorld.txt
 *
 */
public class URLTest {
	
	@Test
	public void url() throws Exception {
		
		//1 创建URL的一个对象
		URL url = new URL("http://127.0.0.1:8080/examples/HelloWorld.txt?phone=13926583118");
		
		//2 读取资源中的内容 读取文件中的数据
		
		//2.1 获取url的协议
		System.out.println(url.getProtocol());
		//2.2 获取url的主机名
		System.out.println(url.getHost());
		//2.3 获取url的端口号
		System.out.println(url.getPort());
		//2.4 获取url的资源路径/文件路径
		//System.out.println(url.getPath());
		//2.5 获取url的文件名
		System.out.println(url.getFile());
		//2.6 获取url的相对路径
		System.out.println(url.getRef());
		//2.7 获取url的查询名
		System.out.println(url.getQuery());
		
		
		//3 如何将服务端的资源读取过来? 利用输入流
		
		InputStream is = url.openStream();
		System.out.println(is.getClass());
		
		byte[] b = new byte[2];
		int len;
		while((len=is.read(b)) != -1){
			String str = new String(b,0,len);
			System.err.print(str);
		}
		
		is.close();
		
		//4 如何读到url内容并且写入到一个文件中
		URLConnection connection = url.openConnection();
		
		InputStream is2 = connection.getInputStream();
		
		FileOutputStream fos = new FileOutputStream(new File("abc.txt"));
		
		//is2读取到的数据保存在b2中
		byte[] b2= new byte[2];
		
		int len2;
		while((len2 = is2.read(b2)) != -1){
			//写到文件中
			fos.write(b2, 0, len2);
		}
		
		fos.close();
		is2.close();
		
		
		
		
	}

}
